package com.h5ve.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.h5ve.data.vo.WarmFlowInteractiveTypeVo;
import com.h5ve.system.dto.LoginDto;
import com.h5ve.system.entity.User;

import java.util.List;

/**
 * <p>
 * 用户信息表 服务类
 * </p>
 *
 * @author h5ve
 * @since 2019-01-30
 */
public interface UserService extends IService<User> {

    /**
     * 用户登录
     *
     * @param loginDto 登录信息
     * @return 结果
     */
    String login(LoginDto loginDto);

    String getValueByKey(String key);

    /**
     * 保存用户信息
     *
     * @param user 用户信息
     * @return 结果
     */
    int saveUser(User user);

    /**
     * 导入用户数据
     *
     * @param userList        用户数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @return 结果
     */
    String importUser(List<User> userList, Boolean isUpdateSupport);

    User getUserByPhone(String phone);

    User getUserByUserName(String userName);

    String getNameBy(String account);

    /**
     * 根据条件分页查询已分配用户角色列表
     *
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    public Page<User> selectAllocatedList(Page<User> page,User user);
    /**
     * 根据条件分页查询未分配用户角色列表
     *
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    public Page<User> selectUnallocatedList(Page<User> page,User user);


    /**
     * 根据条件分页查询不等于用户列表的所有用户
     *
     * @param warmFlowInteractiveTypeVo 用户编号集合
     * @return 用户信息集合信息
     */
    public List<User> selectNotUserList(WarmFlowInteractiveTypeVo warmFlowInteractiveTypeVo);

    /**
     * 根据条件分页查询不等于用户列表的所有用户
     *
     * @param warmFlowInteractiveTypeVo 用户编号集合
     * @return 用户信息集合信息
     */
    public List<User> selectUserList(WarmFlowInteractiveTypeVo warmFlowInteractiveTypeVo);
}
